[アップデート]S3 Express One Zone に S3 ライフサイクルルールを設定できるようになりました

[アップデート]S3 Express One Zone に S3 ライフサイクルルールを設定できるようになりました

Clock Icon2024.11.22

Amazon S3 Express One Zone で、S3 ライフサイクルルールの設定が可能になりました。オブジェクトの自動削除や不完全なマルチパートアップロードの削除がディレクトリバケットに対しても設定できます。

https://aws.amazon.com/jp/about-aws/whats-new/2024/11/amazon-s3-express-one-zone-s3-lifecycle-expirations/

S3 Express One Zone のライフサイクルルール

S3 ライフサイクルルールと比べて機能は限定的です。

できること

  • 指定した日数を経過したオブジェクトの自動削除
  • 不完全なマルチパートアップロードの削除

従来の S3 ライフサイクルルールとの違い

  • マネージメントコンソールから設定不可
  • ストレージクラス間の移行は非対応(ストレージクラスの種類がありません)
  • バケットポリシーの設定が必須

ライフサイクルルールを設定してオブジェクトを自動削除してみた

現在は AWS CLI を使用した設定のみ可能です。以下の手順で実装していきます。

  1. バケットポリシーの設定
  2. ライフサイクルルールの作成
  3. ルールの適用

残念、マネージメントコンソールには設定項目がありません。

mountpoint-for-s3--apne1-az4--x-s3_-_S3_バケット___S3___ap-northeast-1_

バケットポリシーの設定

まず、バケットポリシーを編集して S3 ライフサイクルサービスのプリンシパルからアクセスを許可する設定を追加します。


 {
   "Version":"2008-10-17",
   "Statement":[
      {
         "Effect":"Allow",
         "Principal": {
            "Service":"lifecycle.s3.amazonaws.com"
          },
          "Action":"s3express:CreateSession",
          "Condition": {
             "StringEquals": {
                "s3express:SessionMode": "ReadWrite"
              }
           },
           "Resource":"arn:aws:s3express:ap-northeast-1:123456789012:bucket/mountpoint-for-s3--apne1-az4--x-s3"
       }
   ]
}

mountpoint-for-s3--apne1-az4--x-s3_-_S3_バケット___S3___ap-northeast-1-2

ライフサイクルルールの設定

オブジェクトの有効期限を定義するルールを作成します。1 日経過したオブジェクトを削除するライフサイクルルールを作成しました。

lc-policy.json
{
    "Rules": [
        {
            "Expiration": {
                "Days": 1
            },
            "ID": "Lifecycle expiration rule",
            "Filter": {},
            "Status": "Enabled"
        }
    ]
}

作成したルールを対象のディレクトリバケットに適用します。

aws s3api put-bucket-lifecycle-configuration --region ap-northeast-1 --bucket mountpoint-for-s3--apne1-az4--x-s3 --lifecycle-configuration file://lc-policy.json --checksum-algorithm crc32c
実行結果

ライフサイクルルールが設定されている確認します。

$ aws s3api get-bucket-lifecycle-configuration --region ap-northeast-1 --bucket mountpoint-for-s3--apne1-az4--x-s3
{
    "Rules": [
        {
            "Expiration": {
                "Days": 1
            },
            "ID": "Lifecycle expiration rule",
            "Filter": {},
            "Status": "Enabled"
        }
    ]
}

実行結果確認

ライフサイクルルールを設定したディレクトリバケットは2023/11/29に保存したオブジェクトが 1 つありました。ライフサイクルルールは 1 日経過したオブジェクトが削除されるため、既存のオブジェクトにも適用され削除されるはずです。

mountpoint-for-s3--apne1-az4--x-s3_-_S3_バケット___S3___ap-northeast-1

6 時間後に確認するとオブジェクトが削除されていました。

mountpoint-for-s3--apne1-az4--x-s3_-_S3_バケット___S3___ap-northeast-1-4

削除のログを確認する

S3 データイベントを保存していたので、Athena からデータイベントを確認してみました。CreateSessionDeleteObjectsのログが記録されいました。

クエリエディタ___Athena___ap-northeast-1-4

ちなみに S3 のデータイベントは CloudTrail のイベント履歴から確認はできません。今回のライフサイクルルールによる削除ログを確認したければ、CloudTrail の証跡で S3 データイベントの保存設定と、Athena からデータイベントのログ確認が必要になります。

まとめ

S3 Express One Zone のライフサイクルルール機能は、以下のユースケースで使えるのではないでしょうか。

  • 不完全なマルチパートアップロードの自動クリーンアップ
  • キャッシュファイルの定期的なクリーンアップ
  • 開発・テスト環境の一時データの自動削除

おわりに

現在は AWS CLI からの設定のみでしたので、将来的にはマネージメントコンソールから設定できるようになるといいですね。

参考

Share this article

facebook logohatena logotwitter logo

© Classmethod, Inc. All rights reserved.